using System;

namespace Atomic.Vasp.Options
{
	[Serializable]
	public enum IonicRelaxationAlgorithm
	{
		/// <summary>
		/// A quasi-Newton algorithm (IBRION=1) is used to relax the ions into their instantaneous groundstate. The forces and the
		/// stress tensor are used to determine the search directions for finding the equilibrium positions (the total
		/// energy is not taken into account). This algorithm is very fast and efficient close to local minima, but
		/// fails badly if the initial positions are a bad guess.
		/// http://cms.mpi.univie.ac.at/vasp/vasp/IBRION_1_I.html
		/// </summary>
		QuasiNewton,

		/// <summary>
		/// A conjugate-gradient algorithm (IBRION=2) is used to relax the ions into their instantaneous groundstate. In the first step ions
		/// (and cell shape) are changed along the direction of the steepest descent (i.e. the direction of the calculated forces
		/// and stress tensor).
		/// http://cms.mpi.univie.ac.at/vasp/vasp/IBRION_2.html
		/// </summary>
		ConjugateGradient
	}
}
